package com.jhy.new2025.TwoArray;

/**
 * 对角线遍历
 * 1、其实我开始思路是正确的 我首先想的是就是需要几次循环
 * 2、每一次的循环的顶点和终点是在哪里
 * 3、x和y之间与循环之间的关系 这点我倒是没有清楚 x+y=i
 */
public class FindDiagonalOrder {

    public int[] findDiagonalOrder(int[][] mat) {
        int row = mat.length;
        int col = mat[0].length;
        int[] res = new int[row * col];
        //定义总的循环次数
        for (int i = 0, index = 0; i < row + col - 1; i++) {
            if (i % 2 == 0) {
                // 定义偶数对角线的起始点
                for (int x = Math.min(i, row - 1); x >= Math.max(0, i + 1 - col); x--) {
                    res[index++] = mat[x][i-  x];
                }
            } else {
                // 定义奇数的起始点
                for (int x = Math.max(0, i + 1 - col); x <= Math.min(i, row - 1); x++) {
                    res[index++] = mat[x][i - x];
                }
            }
        }
        return res;
    }
}
